//定义接口的数据类型


//登录的时候需要携带的参数类型 
export interface studentLogin {
    studentUsername: string,
    studentPassword: string
}

export interface loginResponseDate {
    msg: string,
    code: number,
    data: string
}
//z注册的时候需要携带的参数类型 
export interface studentRegister {
    studentUsername: string;
    studentPassword: string;
    studentName: string;
    studentEmail: string;
    classId: string;
    studentNumber: string;
    verificationCode: string;
}
//忘记密码的时候需要携带的参数类型 
export interface studentForgetPassword {
    studentUsername: string;
    studentPassword: string;
    studentEmail: string;
    verificationCode: string;
}

//注册的时候返回体
export interface registerResponse {
    code: number,
    msg: string
    data: string
}

//获取个人信息时的对象
export interface StudentData {
    studentId: number;
    studentUsername: string;
    studentName: string;
    studentNumber: string;
    studentPassword: string;
    studentEmail: string;
    studentPosition: number;
    studentFinish: number;
    studentNotice: string;
    groupId: number;
    classId: number;
    giteeUrl: string;
    groupProName: string,
    studentApplyReason: string,
    groupNotice: string
    groupName: string
}

//获取个人信息的时候返回体
export interface studentGetIndividualProResponse {
    code: number,
    msg: string
    data: StudentData
}
//更新学生信息时传入的信息体
export interface studentUpdate {
    studentUsername: string;
    studentName: string;
    studentPasswordPre: string;
    studentPassword: string;
    studentNumber: string;
    studentEmail: string;
}
export interface StudentUploadDto {
    file: File; // 前端使用 File 类型来表示上传的文件
    studentId: number;

}



//班级学生信息的返回体
export interface getStudentGroupResponse {
    code: number;
    msg: string;
    data: {
        list: Array<{
            studentId: number;
            studentName: string;
            studentNumber: string;
            studentPosition: number;
            groupId: number;
            groupProName: string;
            studentApplyReason: string;
            studentNotice: string;
            giteeUrl: string;
            classId: number;
        }>;
        total: number;
    };
}
export interface getGroupsMemberDatePrams {
    studentId: string;
    page?: number;
    pageSize?: number;
}

export interface getGroupListrDatePrams {
    groupId: string;
    page?: number;
    pageSize?: number;
}

export interface CreateGroupParams {
    groupName: string;
    groupProName: string;
}
//描述学生小组的信息
export interface StudentGroupData {
    groupId: number;
    studentId: number;
    groupName: string;
    groupProName: string;
    groupScore: number;
    groupIsAvailable: number;
    groupLeader: string;
    groupNotice: string;
    groupFinish: number;
    classId: number;
    giteeUrl: string;
}


//获取小组信息的时候返回体
export interface studentGetGroupResponse {
    code: number;
    msg: string;
    data: StudentGroupData
}

//班级学生成绩信息的返回体
export interface getStudentGroupScoreResponse {
    code: number;
    msg: string;
    data: {
        list: Array<{
            studentName: string;
            studentId: number;
            studentNumber: string;
            groupProName: string;
            groupScore: number;
            groupId: number;
            studentFinish: number; // 允许为 null
            classId: number;
            studentPosition: number;
        }>;
        total: number;
    };
}
//获取小组信息的时候返回体
export interface pushNoticeParams {
    studentId: number;
    studentNotice: string;
}


export interface uploadUrlParams {
    groupId: number;
    giteeUrl: string;
}

export interface GroupInfo {
    groupId: number;
    studentId: number;
    groupName: string;
    groupProName: string;
    groupScore: number;
    groupIsAvailable: number;
    groupLeader: string;
    groupNotice: string;
    groupFinish: number;
    classId: number;
    giteeUrl: string;
}

export interface getClassGroupsResponse {
    code: number;
    msg: string;
    data: GroupInfo[];
}

export interface applyEnterGroupsParams {
    groupId: string;
    studentApplyReason: string;
    studentId: string;
}
export interface applyEnterResponse {
    code: number;
    msg: string;
    data: string;
}
